/*
 * IPhisicsObject.h
 *
 *  Created on: 03.03.2012
 *      Author: Kirill Blinov
 *      Copyright: LGPL
 */

#ifndef IPHISICSOBJECT_H_
#define IPHISICSOBJECT_H_

#include <btBulletDynamicsCommon.h>
#include "glm/gtx/quaternion.hpp"

class IPhysicsObject;

class PhysicObjectFabric
{
private:
	PhysicObjectFabric(){};
	~PhysicObjectFabric(){};
public:

   static IPhysicsObject* CreatePhysicsObject( const float Mass, glm::quat  Orientation, glm::vec3 Position,
                                               const glm::vec3 Box[2], const glm::vec3 Inertia );
   static void DeletePhysicsObject( IPhysicsObject* Object );
};

//-------------------------------//

class IPhysicsObject
{
	friend class PhysicObjectFabric;
private:
	IPhysicsObject();
	virtual ~IPhysicsObject();

	btCollisionObject* physicsObject;

protected:

public:

	virtual btCollisionObject* GetBody(){ return physicsObject; }
};

class CRigidConvexPhisicsObject : public IPhysicsObject
{
	friend class PhysicObjectFabric;
private:
	CRigidConvexPhisicsObject( btCollisionObject *PhysicsObject ) : physicsObject(PhysicsObject)
	{};

	~CRigidConvexPhisicsObject(){};

public:

};

#endif /* IPHISICSOBJECT_H_ */
